Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 044cb33948628d6c0b47412934cbaa69fa963aad


Parents : 01babb8
Author : Mark Qvist <mark@unsigned.io>
Date : 2022-01-22T21:43:52+01:00

Added support for LoRa32 v2.1 boards

Changes

5 files changed, 83 insertions(+), 23 deletions(-)

M Config.h +8 -3
M Makefile +5
M ROM.h +9 -3
M Utilities.h +57 -17

Diff

diff --git a/Config.h b/Config.h
index 6b24663..85ef7e5 100644
--- a/Config.h
+++ b/Config.h
@@ -4,7 +4,7 @@
#define CONFIG_H
#define MAJ_VERS 0x01
- #define MIN_VERS 0x18
+ #define MIN_VERS 0x19
#define PLATFORM_AVR 0x90
#define PLATFORM_ESP32 0x80
@@ -109,8 +109,13 @@
const int pin_cs = 18;
const int pin_reset = 23;
const int pin_dio = 26;
- const int pin_led_rx = 2;
- const int pin_led_tx = 25;
+ #if defined(EXTERNAL_LEDS)
+ const int pin_led_rx = 15;
+ const int pin_led_tx = 4;
+ #else
+ const int pin_led_rx = 25;
+ const int pin_led_tx = 25;
+ #endif
#else
#error An unsupported board was selected. Cannot compile RNode firmware.
#endif

diff --git a/Makefile b/Makefile
index d8adb24..25199fc 100644
--- a/Makefile
+++ b/Makefile
@@ -24,6 +24,9 @@ firmware-lora32_v20:
firmware-lora32_v21:
arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x37\""
+firmware-lora32_v21_extled:
+ arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x37\" \"-DEXTERNAL_LEDS=true\""
+
firmware-featheresp32:
arduino-cli compile --fqbn esp32:esp32:featheresp32 --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x34\""
@@ -53,6 +56,8 @@ upload-featheresp32:
upload-mega2560:
arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega
+
+
release-all: release-rnode release-tbeam release-lora32_v21 release-featheresp32 release-genericesp32
release-rnode:

diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino
index 350b69a..5621ad8 100644
--- a/RNode_Firmware.ino
+++ b/RNode_Firmware.ino
@@ -250,6 +250,7 @@ bool startRadio() {
// Flash an info pattern to indicate
// that the radio is now on
+ kiss_indicate_radiostate();
led_indicate_info(3);
return true;
}
@@ -258,12 +259,15 @@ bool startRadio() {
// Flash a warning pattern to indicate
// that the radio was locked, and thus
// not started
+ radio_online = false;
+ kiss_indicate_radiostate();
led_indicate_warning(3);
return false;
}
} else {
// If radio is already on, we silently
// ignore the request.
+ kiss_indicate_radiostate();
return true;
}
}

diff --git a/ROM.h b/ROM.h
index 1434887..b22eafc 100644
--- a/ROM.h
+++ b/ROM.h
@@ -3,11 +3,17 @@
#define CHECKSUMMED_SIZE 0x0B
- #define PRODUCT_RNODE 0x03
- #define PRODUCT_HMBRW 0xF0
- #define PRODUCT_TBEAM 0xE0
+ #define PRODUCT_RNODE 0x03
+ #define PRODUCT_HMBRW 0xF0
+ #define PRODUCT_TBEAM 0xE0
+ #define PRODUCT_T32_20 0xB0
+ #define PRODUCT_T32_21 0xB1
#define MODEL_A4 0xA4
#define MODEL_A9 0xA9
+ #define MODEL_B3 0xB3
+ #define MODEL_B8 0xB8
+ #define MODEL_B4 0xB4
+ #define MODEL_B9 0xB9
#define MODEL_E4 0xE4
#define MODEL_E9 0xE9
#define MODEL_FF 0xFF

diff --git a/Utilities.h b/Utilities.h
index f722ce7..7a5c9c1 100644
--- a/Utilities.h
+++ b/Utilities.h
@@ -49,8 +49,8 @@ uint8_t boot_vector = 0x00;
#elif BOARD_MODEL == BOARD_LORA32_V2_1
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
- void led_tx_on() { digitalWrite(pin_led_tx, LOW); }
- void led_tx_off() { digitalWrite(pin_led_tx, HIGH); }
+ void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
+ void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
#elif BOARD_MODEL == BOARD_HUZZAH32
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
@@ -130,18 +130,33 @@ void led_indicate_warning(int cycles) {
led_rx_off();
}
#elif MCU_VARIANT == MCU_ESP32
- void led_indicate_info(int cycles) {
- bool forever = (cycles == 0) ? true : false;
- cycles = forever ? 1 : cycles;
- while(cycles > 0) {
- led_tx_off();
- delay(100);
- led_tx_on();
- delay(100);
- if (!forever) cycles--;
- }
- led_tx_off();
- }
+ #if BOARD_MODEL == BOARD_LORA32_V2_1
+ void led_indicate_info(int cycles) {
+ bool forever = (cycles == 0) ? true : false;
+ cycles = forever ? 1 : cycles;
+ while(cycles > 0) {
+ led_rx_off();
+ delay(100);
+ led_rx_on();
+ delay(100);
+ if (!forever) cycles--;
+ }
+ led_rx_off();
+ }
+ #else
+ void led_indicate_info(int cycles) {
+ bool forever = (cycles == 0) ? true : false;
+ cycles = forever ? 1 : cycles;
+ while(cycles > 0) {
+ led_tx_off();
+ delay(100);
+ led_tx_on();
+ delay(100);
+ if (!forever) cycles--;
+ }
+ led_tx_off();
+ }
+ #endif
#endif
@@ -195,7 +210,13 @@ int8_t led_standby_direction = 0;
} else {
led_tx_off();
}
- led_rx_off();
+ #if BOARD_MODEL == BOARD_LORA32_V2_1
+ #if defined(EXTERNAL_LEDS)
+ led_rx_off();
+ #endif
+ #else
+ led_rx_off();
+ #endif
}
}
@@ -564,7 +585,14 @@ bool eeprom_lock_set() {
bool eeprom_product_valid() {
uint8_t rval = EEPROM.read(eeprom_addr(ADDR_PRODUCT));
- if (rval == PRODUCT_RNODE || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM) {
+
+ #if PLATFORM == PLATFORM_AVR
+ if (rval == PRODUCT_RNODE || rval == PRODUCT_HMBRW) {
+ #elif PLATFORM == PLATFORM_ESP32
+ if (rval == PRODUCT_RNODE || rval == PRODUCT_HMBRW || rval == PRODUCT_TBEAM || rval == PRODUCT_T32_20 || rval == PRODUCT_T32_21) {
+ #else
+ if (false) {
+ #endif
return true;
} else {
return false;
@@ -573,7 +601,19 @@ bool eeprom_product_valid() {
bool eeprom_model_valid() {
model = EEPROM.read(eeprom_addr(ADDR_MODEL));
- if (model == MODEL_A4 || model == MODEL_A9 || model == MODEL_FF || model == MODEL_E4 || model == MODEL_E9) {
+ #if BOARD_MODEL == BOARD_RNODE
+ if (model == MODEL_A4 || model == MODEL_A9) {
+ #elif BOARD_MODEL == BOARD_HMBRW
+ if (model == MODEL_FF) {
+ #elif BOARD_MODEL == BOARD_TBEAM
+ if (model == MODEL_E4 || model == MODEL_E9) {
+ #elif BOARD_MODEL == BOARD_LORA32_V2_0
+ if (model == MODEL_B3 || model == MODEL_B8) {
+ #elif BOARD_MODEL == BOARD_LORA32_V2_1
+ if (model == MODEL_B4 || model == MODEL_B9) {
+ #else
+ if (false) {
+ #endif
return true;
} else {
return false;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────